package cn.zqy.demo2.day02.demo02;

/**泛型接口两种使用方式：
 *      1.定义接口的实现类，实现接口，并指定接口的泛型【实现接口确定】
 *          eg:  public interface Iterator<E> {     E next();   }
 *               Scanner类实现了Iterator接口,并指定接口的泛型为String,所以重写的next方法泛型默认就是String
 *               public final class Scanner implements Iterator<String>{
 *                      public String next() {}
 *               }
 *      2.定义了一个含有泛型的类,【创建对象的时候确定】泛型的类型
 *          eg:   public interface List<E>{
 *                    boolean add(E e);
 *                    E get(int index); }
 *                 public class ArrayList<E> implements List<E>{
 *                     public boolean add(E e) {}
 *                     public E get(int index) {}
 *                 }
 *
 * */
public class Demo04GenericInterface {
    public static void main(String[] args) {
        // 1.定义接口的实现类，实现接口，并指定接口的泛型
        GenericInterfaceImpl1 i1 = new GenericInterfaceImpl1();
        i1.method("abc");

        //2.定义了一个含有泛型的类,创建对象的时候确定泛型的类型
        GenericInterfaceImpl2<String> s1 =  new GenericInterfaceImpl2<>();
        s1.method("SSSS");
        GenericInterfaceImpl2<Integer> s2 =  new GenericInterfaceImpl2<>();
        s2.method(1233);
    }
}
